// Ruslan K, Syler C, Michael T, Eric P, Chan J
// mouse.h
// 25 September 2011
// Purpose: Header for Mouse class

#ifndef MOUSE_H_
#define MOUSE_H_
#include "map.h"
#include <string>
using std::string;

class Mouse
{
public:
        Mouse(const Map &);                     // Default Constructor. Assigns mouse to starting position of map
        bool solve(const Map &);				// solves map

        void displayMap(const Map &);           // Prints the steps that the mouse took
		void displayMouseRoute();

private:

		bool moveLeft(const int[], const int, unsigned int &);               // Moves left and returns if the action was successful
        bool moveRight(const int[], const int, unsigned int &);              // Moves right and returns if the action was successful
        bool moveUp(const int[], int &, const unsigned int);                 // Moves up and returns if the action was successful
        bool moveDown(const int[], int &, const unsigned int, const int);    // Moves down and returns if the action was successful
		bool checkLeft(const int[], const int, const unsigned int);			 // If moving left is possible returns true
		bool checkRight(const int[], const int, const unsigned int);		 // If moving right is possible returns true
		bool checkUp(const int[], const int, const unsigned int);			 // If moving up is possible returns true			
		bool checkDown(const int[], const int, const unsigned int, const int);	// If moving down is possible retruns true

        struct Coordinate coord;		// position of mouse in maze
		int * _trail;					// saves the steps that the mouse took
		string _mouseRoute;				// route mouse took inserted into a string
};



#endif // MOUSE_H_

